package com.shujia.mysqlapi;

import com.mysql.jdbc.Driver;

import java.sql.*;

/*
    1.注册驱动（告诉Java程序，即将连接的是哪个品牌的数据库）
    2.获取连接（表示JVM的进程和数据库进程之间的通道打开了，这属于进程之间的通信，使用完后记得关闭通道）。
    3.获取数据库操作对象（专门执行sql语句的对象）
    4.执行SQL语句（DQL,DML…）
    5.处理查询结果集 （只有当第四步执行的是select语句的时候，才有本步）
    6.释放资源（使用完资源后一定要关闭资源，Java和数据库之间属于进程间的通信，开启之后一定要记得关闭）
 */
public class MysqlDemo1 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement state = null;
        try {
            //1.注册驱动（告诉Java程序，即将连接的是哪个品牌的数据库）
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取连接（表示JVM的进程和数据库进程之间的通道打开了，这属于进程之间的通信，使用完后记得关闭通道）。
            /**
             *  url: jdbc:mysql://192.168.220.100:3306/bigdata29?characterEncoding=UTF-8
             */
            conn = DriverManager.getConnection("jdbc:mysql://192.168.220.100:3306/bigdata29?characterEncoding=UTF-8&useSSL=false", "root", "123456");
            System.out.println("成功与mysql数据库建立连接：" + conn);

            //3.获取数据库操作对象（专门执行sql语句的对象）
            state = conn.createStatement();

            //4、执行sql语句
            // 增删改 executeUpdate
//            String sql1 = "insert into students(id,name,email,age) values(3,'尚平','123@qq.com',18)";
//            int i = state.executeUpdate(sql1); // Affected rows: 1
//            if(i==1){
//                System.out.println("数据添加成功！");
//            }else {
//                System.out.println("数据添加失败！");
//            }

            //修改操作
//            String sql2 = "update students set age=20 where id=3";
//            int i = state.executeUpdate(sql2);
//            if (i == 1) {
//                System.out.println("数据修改成功！");
//            } else {
//                System.out.println("数据修改失败！");
//            }
            //删除操作
//            String sql3 = "delete from students where id=3";
//            int i = state.executeUpdate(sql3);
//            if (i == 1) {
//                System.out.println("数据删除成功！");
//            } else {
//                System.out.println("数据删除失败！");
//            }

            // 查询 executeQuery
            String sql4 = "select id as sid,name,email,age from students";
            ResultSet resultSet = state.executeQuery(sql4);
//            System.out.println(resultSet);
            // next() 判断下一行有没有数据
            while (resultSet.next()) {
                //根据列索引获取每一列
//                int id = resultSet.getInt(1);
//                String name = resultSet.getString(2);
//                String email = resultSet.getString(3);
//                int age = resultSet.getInt(4);
//                System.out.println(id + "," + name + "," + email + "," + age);

                //根据查询的列名获取每一列 select后面的列名。如果遇到别名，以别名为准
                int id = resultSet.getInt("sid");
                String name = resultSet.getString("name");
                String email = resultSet.getString("email");
                int age = resultSet.getInt("age");
                System.out.println(id + "," + name + "," + email + "," + age);
            }


        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if (state != null) {
                try {
                    state.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
